# Given an arbitrary ransom note string and another string containing letters from all the
# magazines, write a function that will return true if the ransom note can be constructed
# from the magazines ; otherwise, it will return false.
#
# Each letter in the magazine string can only be used once in your ransom note.
#
# Note:
# You may assume that both strings contain only lowercase letters.
#
# canConstruct("a", "b") -> false
# canConstruct("aa", "ab") -> false
# canConstruct("aa", "aab") -> true

import collections


def ransom(ransomnote, magazine):
    dict_mag = collections.defaultdict(int)

    for c in magazine:
        dict_mag[c] += 1

    for c in ransomnote:
        dict_mag[c] -= 1
        if dict_mag[c] < 0:
            return False

    return True

if __name__ == "__main__":
    print(ransom("aa", "aab"))
